"""
matplotlib数据图入门
作者：chenmanlei
日期：2021年09月07日
"""

# 画图预先设定——prop=my_font prop属性指定使用中文字体
# import matplotlib.font_manager as fm
# my_font = fm.FontProperties(fname="C:\Windows\Fonts\simsun.ttc")

import matplotlib.pyplot as plt

# 定义两个列表分别作为x轴、y轴数据
x_data = ['2011', '2012', '2013', '2014', '2015', '2016', '2017']
y_data = [58000, 60200, 63000, 71000, 84000, 90500, 107000]
# 最简单的折线图
plt.plot(x_data, y_data)
plt.show()
# 复式折线图
y_data2 = [52000, 54200, 51500, 58300, 56800, 59500, 62700]
plt.plot(x_data, y_data, x_data, y_data2)
plt.show()
# 复式折线图方法2
plt.plot(x_data, y_data)
plt.plot(x_data, y_data2)
plt.show()
# "指定颜色、线框，样式等"：plt.plot(x_data,y_data，color='red',linewidth=2.0,linestyle='--'))
# linestyle:  -表示实线  --表示虚线  :表示点线  -.表示短线、点相间的虚线


# 管理图例方法1（ln1&ln2）
# 指定折线的颜色、线宽和样式
ln1, = plt.plot(x_data, y_data, color='red', linewidth=2.0, linestyle='--')
ln2, = plt.plot(x_data, y_data2, color='blue', linewidth=3.0, linestyle='-.')

# TODO(使用Matplotlib的字体管理器加载中文字体)
import matplotlib.font_manager as fm

my_font = fm.FontProperties(fname="C:\Windows\Fonts\simsun.ttc")

# 调用legend函数设置图例
plt.legend(handles=[ln2, ln1], labels=['疯狂Android讲义年销量', '疯狂Java讲义年销量'],
           loc='lower right', prop=my_font)
plt.show()
# loc参数指定图例的添加位置best=自动选择最佳位置，upper/lower right/left

# 管理图例方法2(label)
plt.plot(x_data, y_data, color='red', linewidth=2.0, linestyle='--', label='疯狂Android讲义年销量')
plt.plot(x_data, y_data2, color='blue', linewidth=3.0, linestyle='-.', label='疯狂Java讲义年销量')
plt.legend(prop=my_font, loc='best')
plt.show()

# 管理坐标轴
plt.xlabel("年份")
plt.ylabel("图书销量（本）")
plt.title('疯狂图书的历年销量')
plt.yticks([50000, 70000, 100000],
           [r'挺好', r'优秀', r'火爆'])
plt.show()

# TODO(完整代码)
import matplotlib.pyplot as plt

x_data = ['2011', '2012', '2013', '2014', '2015', '2016', '2017']
y_data = [58000, 60200, 63000, 71000, 84000, 90500, 107000]
y_data2 = [52000, 54200, 51500, 58300, 56800, 59500, 62700]
plt.plot(x_data, y_data, color='red', linewidth=2.0, linestyle='--', label='疯狂Android讲义年销量')
plt.plot(x_data, y_data2, color='blue', linewidth=3.0, linestyle='-.', label='疯狂Java讲义年销量')
import matplotlib.font_manager as fm

my_font = fm.FontProperties(fname="C:\Windows\Fonts\simsun.ttc")
plt.legend(loc='best')
plt.xlabel("年份")
plt.ylabel("图书销量（本）")
plt.title('疯狂图书的历年销量')
plt.yticks([50000, 70000, 100000],
           [r'挺好', r'优秀', r'火爆'])

# 对坐轴进行更加详细的控制
ax = plt.gca()
# 设置将x轴的刻度值放在底部x轴上
ax.xaxis.set_ticks_position('bottom')
# 设置将y轴的刻度值放在左边y轴上
ax.yaxis.set_ticks_position('left')
# 设置右边坐标轴线的颜色（设置为none表示不显示）
ax.spines['right'].set_color('none')
# 设置顶部坐标轴线的颜色（设置为none表示不显示）
ax.spines['top'].set_color('none')
# 定义底部坐标轴线的位置（放在7000数值处）
ax.spines['bottom'].set_position(('data', 70000))
plt.show()